<?php
include('simple_html_dom.php');

function ping($host, $port, $timeout) 
{ 
  $tB = microtime(true); 
  $fP = fSockOpen($host, $port, $errno, $errstr, $timeout); 
  if (!$fP) { return "down"; } 
  $tA = microtime(true); 
  return round((($tA - $tB) * 1000), 0)." ms"; 
}

function pulisci($col){
	$col =  ereg_replace('<h2>' , '' ,$col );
	$col =  ereg_replace('</h2>' , '' ,$col );
	$col = ereg_replace('<strong>' , '' ,$col);
	$col = ereg_replace('</strong>' , '' ,$col);
	$col = ereg_replace('<br>' , '' ,$col);
	$col = ereg_replace('</div>' , '' ,$col);
	$col =  ereg_replace(' ' , '' ,$col );
	return $col;
}

function pulisciStaz($col){
	$col = ereg_replace('<h2>' , '' ,$col );
	$col = ereg_replace('</h2>' , '' ,$col );
	$col = ereg_replace('<strong>' , '' ,$col);
	$col = ereg_replace('</strong>' , '' ,$col);
	$col = ereg_replace('<br>' , '' ,$col);
	$col = ereg_replace('</div>' , '' ,$col);
	return $col;
}
function timeStamp($ora) {
        $timeAtt=split (':',$ora);
        return ((int)$timeAtt[0]*3600)+((int)$timeAtt[1]*60);
}

function dettagli($html,$intestazione) {
        date_default_timezone_set('Europe/Rome');
        $data=time();
        $data=date('H:i', $data);      
        $timeLoc=timeStamp($data);
        if (!strstr($html,"The document has moved")) {
        
	$json = array ();
	$json_com = array ();
	$json_Effettuate = array ();
	$numEffettuate=0;
	$valErrato=False;
	foreach ($html->find('div.giaeffettuate') as $row) {
		$json_com = array ();
		$numEffettuate++;
		$stazione = $row->find('h2');
		$oraPart = "";
		$oraArr = "";
		$i=0;
                $j=0;
		foreach ($row->find('p') as $p) {

			$ora=$p->find('strong');
			if ($i==-1) {
                           $oraPart=$ora[0];
                           $timePart = timeStamp($oraPart); 
                           if ($j==0 && $timeLoc > $timePart) {
                               $json_com = array();
                               $numEffettuate = 0;
							   $valErrato=True;                              
                           } else $j=1;
                        }
			else
				$oraArr=$ora[0];
			$i++;
		}
		if ($valErrato ) break; 
		$bin=split ('Previsto:',$row);
		$binPrev=split ('Binario',$bin[1]);
		$binReal=split ('Reale:',$bin[1]);
		$json_com['stazione'] = pulisciStaz($stazione[0]);
		$json_com['partenzaProgrammata'] = pulisci($oraPart);
		$json_com['partenzaPrevista'] = pulisci($oraArr);
		$json_com['binarioProgrammato'] = pulisci($binPrev[0]);
		$json_com['binarioReale'] = pulisci($binReal[1]);
		array_push($json_Effettuate, $json_com);
	}	
	$json_DaEffettuate = array ();
	$numDaEffettuate=0;
	
	if ($valErrato) {
		foreach ($html->find('div.giaeffettuate') as $row) {
			$json_com = array ();
			//$numDaEffettuate++;
			$stazione = $row->find('h2');
			$oraPart = "";
			$oraArr = "";
			$i=0;
			foreach ($row->find('p') as $p) {

				$ora=$p->find('strong');
				if ($i==0) $oraPart=$ora[0];
				else
					$oraArr=$ora[0];
				$i++;
			}
			$bin=split ('Previsto:',$row);
			$binPrev=split ('Binario',$bin[1]);
			$binReal=split ('Reale:',$bin[1]);
			$json_com['stazione'] = pulisciStaz($stazione[0]);
			$json_com['arrivoProgrammato'] = pulisci($oraPart);
			$json_com['arrivoPrevisto'] = pulisci($oraArr);
			$json_com['binarioProgrammato'] = pulisci($binPrev[0]);
			$json_com['binarioReale'] = pulisci($binReal[1]);
			array_push($json_DaEffettuate, $json_com);
		}
	}
	
	foreach ($html->find('div.corpocentrale') as $row) {
		$json_com = array ();
		//$numDaEffettuate++;
		$stazione = $row->find('h2');
		$oraPart = "";
		$oraArr = "";
		$i=0;
		foreach ($row->find('p') as $p) {

			$ora=$p->find('strong');
			if ($i==0) $oraPart=$ora[0];
			else
				$oraArr=$ora[0];
			$i++;
		}
		$bin=split ('Previsto:',$row);
		$binPrev=split ('Binario',$bin[1]);
		$binReal=split ('Reale:',$bin[1]);
		$json_com['stazione'] = pulisciStaz($stazione[0]);
		$json_com['arrivoProgrammato'] = pulisci($oraPart);
		$json_com['arrivoPrevisto'] = pulisci($oraArr);
		$json_com['binarioProgrammato'] = pulisci($binPrev[0]);
		$json_com['binarioReale'] = pulisci($binReal[1]);
		array_push($json_DaEffettuate, $json_com);
	}

	$array = array (
			"stato"=> 0,
                        "mess"=>"Con la versione premium pu&ograve; visualizzare anche i ritardi",
			"fermateEffetuate" => $json_Effettuate,
			"numeroFermateEffettuate" => $numEffettuate,
			"fermateDaEffettuare" => $json_DaEffettuate,
			"numeroFermateDaEffettuare" => count( $json_DaEffettuate));
        }
        else
         $array = array (
			"stato" => -1,
                        "messaggio"=>"Il servizio non e' disponibile per aggiornamenti in corso.\nSara' ripristinato prima possibile.",
			"fermateEffetuate" => 0,
			"numeroFermateEffettuate" => 0,
			"fermateDaEffettuare" => 0,
			"numeroFermateDaEffettuare" => 0);
	return json_encode($array);
}





function parserHtml($dettagli) {
	for ($i=0; $i<=1; $i++) {
		$html = file_get_html('http://m.viaggiatreno.it/vt_pax_internet/mobile/scheda?dettaglio=visualizza&numeroTreno='.$dettagli.'&tipoRicerca=numero&lang=IT');
		$i = 0 ;
		$intestazione = '';
		if (strstr($html, "class=\"giaeffettuate") || strstr($html, "class=\"corpocentrale") || $i!=1 ) break;

	}

	$i = 0 ;
        $url = 'http://m.viaggiatreno.it/vt_pax_internet/mobile/numero';

        $data = array('tipoRicera' => 'numero', 'numeroTreno' => $dettagli, 'lang' => 'IT' );


        $options = array(
            'http' => array(
            'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
            'method'  => 'POST',
            'content' => http_build_query($data),
            ),
       );
       $context  = stream_context_create($options);
       $response = file_get_contents($url, false, $context);

 
         if (strstr($response,"Treno cancellato")) {
            $array = array (
			"stato" => -1,
                        "messaggio"=>"Treno soppresso");
	    echo json_encode($array);
            exit;
        }
        if (strstr($response,"numero treno non valido")) {
            $array = array (
			"stato" => -1,
                        "messaggio"=>"Numero treno non valido");
	    echo json_encode($array);
            exit;
        }
	foreach($html->find('th') as $element) {
		$value = strtolower($element->title);
		$value =  ereg_replace('num. treno' , 'numero' ,$value);
		$value =  ereg_replace('prezzo di ' , '' ,$value);
		$value =  ereg_replace('categoria' , 'tipo' ,$value);
		$value =  ereg_replace(' \*\*' , '' ,$value);
		$intestazione[$i] =  strtolower($value);
		$i++;
	}

	return dettagli($html,$intestazione);
}

ping("mobile.viaggiatreno.it",80,10);
$dettagli = $_GET['nTreno'];

echo parserHtml($dettagli);
$stato= $_GET['stato'];

   file_get_html('http://www.google-analytics.com/__utm.gif?utmwv=5.4.1&utms=2&utmn=77039205&utmhn=localhost&utmcs=utf-8&utmsr=1280x800&utmvp=1280x319&utmsc=32-bit&utmul=en&utmje=1&utmfl=11.6%20r602&utmdt=Orari%20Treno&utmhid=1577572817&utmr=-&utmp=detail2-'.$dettagli.'&utmht=1367314900985&utmac=UA-26015492-1&utmcc=__utma%3D111872281.986361034.1367314894.1367314894.1367314894.1%3B%2B__utmz%3D111872281.1367314894.1.1.utmcsr%3D(direct)%7Cutmccn%3D(direct)%7Cutmcmd%3D(none)%3B&utmu=q&utm_source=milano');
?>